It is sometimes desirable to locate a host computer and a peripheral data storage device at great distances from one another. For example, the host computer and data storage device may be located in different buildings or cities. For communication protocols which include repetitive command-acknowledge cycles, or "handshaking," the host and peripheral must be relatively close together to operate at acceptable speeds. As the distance between the host and peripheral increases, the round trip propagation time of each command-acknowledge cycle also lengthens, to the point where this cycle time is too long for efficient and useful data transfer. In addition, lengthening the distance between the host and peripheral beyond certain limits creates timing problems resulting in desynchronization of the protocol and associated data transfer, resulting in data transfer failures. Where the distance between host and peripheral is too great to maintain acceptable speed of operation or to maintain synchronization, a special interface system is required. Such interface systems, sometimes called extended communications channels, include end-to-end systems, pipelining systems and command batching systems.
An end-to-end system uses two buffers, one for the host and another for the peripheral device. The buffers act as speed matching buffers and receive commands or data and transmit it across the extended communications channel to the other buffer. In this type of system, standard protocol is followed such that a "handshake" requires a command to travel from the host through both buffers to the peripheral before a response from the peripheral is transmitted back through the buffers to the host. During the round-trip time, the host cannot advance the protocol. Therefore, this system has limited speed in responding to commands from the host and in transmitting commands and data between the host and peripheral.
A pipelining system improves upon the end-to-end system by providing increased speed of response. The pipelining system also uses two buffers on the extended communications channel. A host buffer receives commands from the host and immediately sends a response. In return, the host can continue sending commands to the host buffer before those commands are transmitted to the peripheral through the other buffer. The host buffer also sequentially transmits those commands to the peripheral while it receives more commands from the host. Flow control software determines when the host buffer will stop receiving commands to avoid getting a backlog of stored commands. After the host buffer transmits a sufficient number of commands to the peripheral and receives responses, the host buffer will then again accept more commands or data from the host. The pipelining system, however, does not alter protocol in any way and is thus limited in its ability to improve speed of transfer.
A batching system stores a block or batch of contiguous host commands in a host buffer. The host buffer then transmits the stored batch of commands to a peripheral buffer, and receives responses from the peripheral. These responses are then transmitted back to the host and are the actual responses of the peripheral. The system must wait for responses to each transmitted block of commands before it can send responses back to the host.
Yet other extended communications channels are implemented as modifications to the standard host I/O software. These types of systems are undesirable because of risk to software stability and because they can degrade performance of the system by utilizing memory and CPU time. Also, customizing standard software creates special and undesirable software maintenance problems.
A need thus exists for an extended communications system that provides enhanced data transfer speed and which does not require modifications to the host software.